colorscheme:
yellow
violet
bw
Prihlásenie:
Login: Heslo:

Problem statement: zenit13ckf

F: Mutácia Johnyho Burgra
25 bodov Časový limit: 100 ms


Po zahraničí sa dostávame aj k slovenskému hernému priemyslu. Medzi významných predstaviteľov časov minulých patrí aj klasická point and click adventúra z roku 1996 menom Mutácia Johnyho Burgra. Malý Johny sa omylom stal obeťou nevydareného experimentu, po ktorom mu zostala hlava prasiatka. Úlohou hráča je pomôcť Johnymu vypátrať šialeného profesora, ktorý jediný mu môže vrátiť jeho pôvodnú podobu.

Xerno padal do kanálovej šachty a hlasom Joža Pročka kričal, že sa pomstí. Johny ale vedel, že týchto výstrah sa teraz nemusí báť a tešil sa z toho, že konečne môže vniknúť do jeho domu a skúsiť zistiť viac o únose profesora Foogla. Samozrejme, musí sa vyhnúť kúpeľni, v ktorej sa kúpe nič netušiaca Xernova žena.

Johny našiel Xernov počítač. Ten je ale zaheslovaný, čo ešte zintenzívnilo Johnyho dojem, že v sebe skrýva zaujímavé informácie. Pod kobercom našiel papierik s číslami - nie je ich veľa a všetky sú medzi 0 a 255 vrátane. Že by sme skúsili známe kódovanie pod menom base64? Pomôžte Johnymu a nájdite reťazec, ktorý je výsledkom zakódovania uvedenej postupnosti čísel.

Kódovanie base64 dostáva ako vstup postupnosť bajtov (čísel medzi 0 a 255) a kóduje ju do reťazca pozostávajúceho z písmen anglickej abecedy a iných znakov. Pozemšťania ho používajú napríklad v e-mailových serveroch, mimozemšťania zvyčajne na heslovanie počítačov.

Popis tohto kódovania začneme tým, že priradíme číslam 0 až 63 znaky. Hodnoty 0 až 25 vrátane budú zodpovedať veľkým písmenám anglickej abecedy (v poradí, v akom v nej nasledujú). Hodnoty 26 až 51 budú zodpovedať malým písmenám anglickej abecedy (znaku 'b' priradíme 27, znaku 'c' priradíme 28, atď.). Hodnoty 52 až 61 priradíme znakom (nie číslam) '0''9'. Číslu 62 bude prislúchať znak '+' a číslu 63 znak '/'. Úvodzovky sú pri znakoch len pre názornosť.

Aby sme ďalej mohli pokračovať vo vysvetľovaní, musíme začať uvažovať v binárnej sústave. Vezmime si prvé tri bajty zo vstupnej postupnosti. Každý z nich sa dá zapísať v binárnej sústave ako osemmiestny reťazec núl a jednotiek. Ak si zapíšeme tieto reťazce za sebou, dostaneme postupnosť núl a jednotiek, ktorá bude dlhá 24. Túto postupnosť rozsekáme na štyri úseky dlhé 6. Každý z týchto štyroch úsekov je binárne zapísané šesťbitové číslo, teda číslo medzi 0 a 63 vrátane. Výstupný kód trojice bajtov budú štyri znaky zodpovedajúce týmto hodnotám.

Uvažujme napríklad trojicu bajtov 2 26 35. Zapíšme si tieto čísla binárne za sebou

+--------+--------+--------+
|00000010|00011010|00100011|
+--------+--------+--------+

Rozdeľme teraz tento reťazec na 4 podreťazce dlhé 6

+------+------+------+------+
|000000|100001|101000|100011|
+------+------+------+------+

Prvá šestica je binárny zápis čísla nula. Ďalšie tri šestice sú čísla 33, 40 a 35. Ak tieto čísla prepíšeme na znaky podľa kódovania, ktoré sme si popísali vyššie, dostávame 'Ahoj'.

Celé kódovanie prebieha tak, že postupne berieme trojice bajtov a tie kódujeme do štvoríc písmen. Ak na konci zostane menej ako tri bajty, tak sa potrebný počet bajtov do trojice doplní. Doplnené bajty majú vždy hodnotu nula.

Na vstupe sa nachádza jediný riadok, na ktorom je vstupná postupnosť. Načítavajte až do konca vstupného súboru. Na vstupe bude aspoň jedno a najviac 100 čísel, medzi dvoma číslami bude jedna medzera. Všetky budú celé a medzi 0 a 255 vrátane. Na výstup vypíšte jediný riadok - zakódovaný reťazec.

> Príklady:

vstup
2 26 35 
výstup
Ahoj 

vstup
41 82 8 32 130 10 
výstup
KVIIIIIK 

vstup
255 255 255 0 0 0 254 254 254 127 
výstup
////AAAA/v7+fwAA 




(C) MišoF, Zemčo. 2007 - 2013